package com.aaa.javaweb.servlet;

import com.aaa.javaweb.dao.OrderDao;
import com.aaa.javaweb.dao.UpdOrderDao;
import com.aaa.javaweb.entity.TOrder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.text.SimpleDateFormat;
import java.util.*;

@Controller
public class OrderController {

    @Autowired
    private OrderDao orderDao;

    @Autowired
    private UpdOrderDao updOrderDao;

    /**
     * 根据前台请求获取的房间类型id,来获取刀所有的设施
     * @return
     */
    @RequestMapping("xiangqing")
    @ResponseBody
    public List xiangqing(Integer typeid){
        //System.out.println(typeid);
        List<Map> selxiangqing= orderDao.selxiangqing(typeid);
        // suoyoude sheshi
        List list = new ArrayList();
        for (Map map : selxiangqing) {
            list.add(map.get("name"));
        }
        return list;
    }



    @RequestMapping("jdtype")
    @ResponseBody
    public Map jdtype(Integer typeid){
        //System.out.println(typeid);
        Map maps = new HashMap();
        //查找房间类型和它的价格押金
        List<Map> rtype=orderDao.rtype(typeid);
        System.out.println(rtype.size());
        Map map = rtype.get(0);

        maps.put("rtype",map);
        //获取到最大时间段
        List maxDate=orderDao.getMaxDate(typeid);
        System.out.println(maxDate.size());
        if (maxDate.size()>0){
            //我们要先获取到现在的时间，然后和最大时间用函数求出所有的时间加到那个表里
            Date date = new Date();
            String format = new SimpleDateFormat("yyyy-MM-dd").format(date);
            //用这个，来获取所有的时间
            orderDao.allNowandMaxtime(format,maxDate.get(0)+"");
            System.out.println(format);
            //查询这个表里的所有时间段
            List<Map> selalltime=orderDao.selAlltime();
            System.out.println(selalltime.size());
            //查询这个时间段之内每天预订的房间数  以及已满的时间
            Map getDateOrder=orderDao.getDateOrder(selalltime,typeid);
            //将信息存储再map里返回给前台
            maps.put("orderMess",getDateOrder);

        }else {
            System.out.println("没有人预订");
        }

        //System.out.println(maps);
        return maps;
    }


    /**
     * 预订房间
     */
    @RequestMapping("addOrder")
    @ResponseBody
     public String addOrder(TOrder order){
        System.out.println(order);
         //System.out.println(order);
        //根据预订的两个时间 得到中间的时间 插入到那个表里
        updOrderDao.getDate(order);
        //还是查询那个表
        List<Map> selalltime=orderDao.selAlltime();
        //老样子
        Map getDateOrder=orderDao.getDateOrder(selalltime,order.getRoomtype());
        List<Map> mapsDate = (List<Map>) getDateOrder.get("mapsDate");
        boolean flag=true;
        for (Map map : mapsDate) {
            for (Object o : map.keySet()) {
                //o代表时间
                int sy = Integer.parseInt(map.get(o) + "");
                if (order.getCount()>sy){
                    flag=false;
                }
            }
        }
        if (flag){
            int i = updOrderDao.addOrder(order);
            return "1";
        }else {
            //不能预订了
            return "0";
        }

     }

}
